package pe.gob.osce.sirenas.model.jpa;

/**
*  Resumen				
*  Objeto		       	: Persona.java
*  Descripción		  	: .
*  Fecha de Creación    : 26/02/2015.
*  Pry de Creación 		: RNA/RNS.
*  Autor			   	: Alberto Vargas
*  -------------------------------------------------------------------------------------
*  Modificaciones
*  Motivo	            Fecha           Nombre         				Descripción
*  -------------------------------------------------------------------------------------
*/

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name="MPR_REG_PERSONA",schema="RNAS")
@SequenceGenerator(name="sqId_Mpr_Persona",sequenceName="RNAS.ID_MPR_PERSONA", allocationSize=1)
public class Persona implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 5583641944524843675L;
	@Id
	@GeneratedValue(strategy =	GenerationType.SEQUENCE, generator="sqId_Mpr_Persona")
	@Column(name="N_ID_PERSONA")
	private Long idPersona;	
	@Column(name="C_NOM_APE_PATERNO")
	private String apPaterno;	
	@Column(name="C_NOM_APE_MATERNO")
	private String apMaterno;	
	@Column(name="C_NOM_PERSONA")
	private String nombres;	
	@Column(name="N_IND_GENERO")
	private Long indGenero;	
	@Column(name="D_FEC_NACIMIENTO")
	private Date fecNacimiento;		
	@Column(name="N_IND_TIPO_DOC")
	private Integer indTipoDocumento;	
	@Column(name="C_VAL_NUM_DOCUMENTO")
	private String numDocumento;	
	@Column(name="N_NUM_RUC")
	private Long numRuc;		
	@Column(name="C_NOM_FOTO")
	private String nomFoto;	
	@Column(name="D_FEC_FOTO")
	private Date fecFoto;
	@Column(name="C_COD_TRAMITE")
	private String codTramite;	
	@Column(name="N_IND_ESTADO")
	private Long estado;
	
	@Embedded
	private Auditoria auditoria;
	
	@OneToMany(mappedBy = "persona")
	//@NotFound(action = NotFoundAction.IGNORE)
    private List<Domicilio> listaDomicilio;
	
	@OneToMany(mappedBy = "persona")
	//@NotFound(action = NotFoundAction.IGNORE)
    private List<Comunicaciones> listaComunicaciones;
	
	@OneToMany(mappedBy = "persona")
	//@NotFound(action = NotFoundAction.IGNORE)
    private List<HojaVida> listaHojaVida;

	/**
	 * Metodo que permite obtener idPersona.
	 * @return idPersona , tipo Long.
	 */
	public Long getIdPersona() {
		return idPersona;
	}

	/**
	 * Permite actualizar idPersona.
	 * @param idPersona, tipo Long.
	 */
	public void setIdPersona(Long idPersona) {
		this.idPersona = idPersona;
	}

	/**
	 * Metodo que permite obtener apPaterno.
	 * @return apPaterno , tipo String.
	 */
	public String getApPaterno() {
		return apPaterno;
	}

	/**
	 * Permite actualizar apPaterno.
	 * @param apPaterno, tipo String.
	 */
	public void setApPaterno(String apPaterno) {
		this.apPaterno = apPaterno;
	}

	/**
	 * Metodo que permite obtener apMaterno.
	 * @return apMaterno , tipo String.
	 */
	public String getApMaterno() {
		return apMaterno;
	}

	/**
	 * Permite actualizar apMaterno.
	 * @param apMaterno, tipo String.
	 */
	public void setApMaterno(String apMaterno) {
		this.apMaterno = apMaterno;
	}

	/**
	 * Metodo que permite obtener nombres.
	 * @return nombres , tipo String.
	 */
	public String getNombres() {
		return nombres;
	}

	/**
	 * Permite actualizar nombres.
	 * @param nombres, tipo String.
	 */
	public void setNombres(String nombres) {
		this.nombres = nombres;
	}


	public Long getIndGenero() {
		return indGenero;
	}

	public void setIndGenero(Long indGenero) {
		this.indGenero = indGenero;
	}

	/**
	 * Metodo que permite obtener fecNacimiento.
	 * @return fecNacimiento , tipo Date.
	 */
	public Date getFecNacimiento() {
		return fecNacimiento;
	}

	/**
	 * Permite actualizar fecNacimiento.
	 * @param fecNacimiento, tipo Date.
	 */
	public void setFecNacimiento(Date fecNacimiento) {
		this.fecNacimiento = fecNacimiento;
	}

	/**
	 * Metodo que permite obtener indTipoDocumento.
	 * @return indTipoDocumento , tipo Integer.
	 */
	public Integer getIndTipoDocumento() {
		return indTipoDocumento;
	}

	/**
	 * Permite actualizar indTipoDocumento.
	 * @param indTipoDocumento, tipo Integer.
	 */
	public void setIndTipoDocumento(Integer indTipoDocumento) {
		this.indTipoDocumento = indTipoDocumento;
	}

	/**
	 * Metodo que permite obtener numDocumento.
	 * @return numDocumento , tipo String.
	 */
	public String getNumDocumento() {
		return numDocumento;
	}

	/**
	 * Permite actualizar numDocumento.
	 * @param numDocumento, tipo String.
	 */
	public void setNumDocumento(String numDocumento) {
		this.numDocumento = numDocumento;
	}



	/**
	 * Metodo que permite obtener numRuc.
	 * @return numRuc , tipo Long.
	 */
	public Long getNumRuc() {
		return numRuc;
	}

	/**
	 * Permite actualizar numRuc.
	 * @param numRuc, tipo Long.
	 */
	public void setNumRuc(Long numRuc) {
		this.numRuc = numRuc;
	}

	/**
	 * Metodo que permite obtener nomFoto.
	 * @return nomFoto , tipo String.
	 */
	public String getNomFoto() {
		return nomFoto;
	}

	/**
	 * Permite actualizar nomFoto.
	 * @param nomFoto, tipo String.
	 */
	public void setNomFoto(String nomFoto) {
		this.nomFoto = nomFoto;
	}

	/**
	 * Metodo que permite obtener fecFoto.
	 * @return fecFoto , tipo Date.
	 */
	public Date getFecFoto() {
		return fecFoto;
	}

	/**
	 * Permite actualizar fecFoto.
	 * @param fecFoto, tipo Date.
	 */
	public void setFecFoto(Date fecFoto) {
		this.fecFoto = fecFoto;
	}

	/**
	 * Metodo que permite obtener codTramite.
	 * @return codTramite , tipo String.
	 */
	public String getCodTramite() {
		return codTramite;
	}

	/**
	 * Permite actualizar codTramite.
	 * @param codTramite, tipo String.
	 */
	public void setCodTramite(String codTramite) {
		this.codTramite = codTramite;
	}

	/**
	 * Metodo que permite obtener estado.
	 * @return estado , tipo Long.
	 */
	public Long getEstado() {
		return estado;
	}

	/**
	 * Permite actualizar estado.
	 * @param estado, tipo Long.
	 */
	public void setEstado(Long estado) {
		this.estado = estado;
	}

	/**
	 * Metodo que permite obtener auditoria.
	 * @return auditoria , tipo Auditoria.
	 */
	public Auditoria getAuditoria() {
		return auditoria;
	}

	/**
	 * Permite actualizar auditoria.
	 * @param auditoria, tipo Auditoria.
	 */
	public void setAuditoria(Auditoria auditoria) {
		this.auditoria = auditoria;
	}

	/**
	 * Metodo que permite obtener listaDomicilio.
	 * @return listaDomicilio , tipo List<Domicilio>.
	 */
	public List<Domicilio> getListaDomicilio() {
		return listaDomicilio;
	}

	/**
	 * Permite actualizar listaDomicilio.
	 * @param listaDomicilio, tipo List<Domicilio>.
	 */
	public void setListaDomicilio(List<Domicilio> listaDomicilio) {
		this.listaDomicilio = listaDomicilio;
	}

	/**
	 * Metodo que permite obtener listaComunicaciones.
	 * @return listaComunicaciones , tipo List<Comunicaciones>.
	 */
	public List<Comunicaciones> getListaComunicaciones() {
		return listaComunicaciones;
	}

	/**
	 * Permite actualizar listaComunicaciones.
	 * @param listaComunicaciones, tipo List<Comunicaciones>.
	 */
	public void setListaComunicaciones(List<Comunicaciones> listaComunicaciones) {
		this.listaComunicaciones = listaComunicaciones;
	}

	/**
	 * Metodo que permite obtener listaHojaVida.
	 * @return listaHojaVida , tipo List<HojaVida>.
	 */
	public List<HojaVida> getListaHojaVida() {
		return listaHojaVida;
	}

	/**
	 * Permite actualizar listaHojaVida.
	 * @param listaHojaVida, tipo List<HojaVida>.
	 */
	public void setListaHojaVida(List<HojaVida> listaHojaVida) {
		this.listaHojaVida = listaHojaVida;
	}
}
